/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sistema.aplicacao;

import com.sistema.db.*;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.*;
import java.sql.*;

/**
 *
 * @author geraldo
 */
public class FormCliente extends JDialog
{

    private JTextField txtDescricao;
    private JComboBox cbxStatus;
    private JButton btnOk;
    private JButton btnCancelar;
    private JLabel lblTitulo;
    private String descricao = "";
    private int status;

    public FormCliente()
    {
        setTitle( "Controle de Ligações Suporte" );
        setSize( 550, 350 );
        setLayout( null );
        setLocationRelativeTo( null );
        iniciaComponentes();
        actions();
        setModal( true );
        setVisible( true );

    }

    public FormCliente( String descricao, int status )
    {
        this.descricao = descricao;
        this.status = status;

        setTitle( "Controle de Ligações Suporte" );
        setDefaultLookAndFeelDecorated( true );
        setSize( 500, 350 );
        setLayout( null );
        setLocationRelativeTo( null );
        iniciaComponentes();
        setComponentes();
        actions();
        setModal( true );
        setVisible( true );

    }

    public void iniciaComponentes()
    {
        add( lblTitulo = new JLabel( "Cadastro de Clientes" ) ).setBounds( 200, 20, 400, 60 );
        Font font_titulo = new Font( "Arial", Font.BOLD, 18 );
        lblTitulo.setFont( font_titulo );

        add( new JLabel( "Descrição:" ) ).setBounds( 70, 100, 80, 30 );
        add( txtDescricao = new JTextField() ).setBounds( 160, 100, 300, 30 );

        Vector vctStatus = new Vector();
        Banco conn = new Banco();

        vctStatus.addElement( "" );

        try
        {
            ResultSet rs = conn.executarConsulta( "SELECT DISTINCT descricao FROM status_cliente" );
            while ( rs.next() )
            {
                vctStatus.addElement( rs.getString( "descricao" ) );

            }
        } catch ( Exception e )
        {
        }

        conn.fecha();

        add( new JLabel( "Status: " ) ).setBounds( 70, 160, 80, 30 );
        add( cbxStatus = new JComboBox( vctStatus ) ).setBounds( 160, 160, 300, 30 );

        add( btnOk = new JButton( "Ok" ) ).setBounds( 180, 240, 120, 30 );
        add( btnCancelar = new JButton( "Cancelar" ) ).setBounds( 320, 240, 120, 30 );

    }

    public void setComponentes()
    {
        txtDescricao.setText( this.descricao );
        cbxStatus.setSelectedIndex( this.status );
    }

    public void actions()
    {
        btnOk.addActionListener( new ActionListener()
        {

            public void actionPerformed( ActionEvent ae )
            {
                String descricaoAtualizada = txtDescricao.getText();
                int statusAtualizada = cbxStatus.getSelectedIndex();

                if ( descricaoAtualizada.equalsIgnoreCase( "" ) )
                {
                    JOptionPane.showMessageDialog( null, "Favor preencher o campo descricao" );
                    return;
                }
                if ( statusAtualizada == 0 )
                {
                    JOptionPane.showMessageDialog( null, "Favor selecionar o status" );
                    return;
                }

                //Verifica se o cliente esta registrado
                Banco VerificaLogin = new Banco();
                String sql = "SELECT id, count(*) as qtde FROM clientes WHERE descricao = '" + descricaoAtualizada + "' GROUP BY descricao ";
                
                ResultSet consulta = VerificaLogin.executarConsulta( sql );
                VerificaLogin.fecha();
       
                int qtdeDescricao = 0;
                int idCliente = 0;


                try
                {
                    while(consulta.next())
                    {
                       qtdeDescricao = consulta.getInt( "qtde" );
                       idCliente = consulta.getInt( "id" );
                    }

                } catch ( Exception e )
                {
                    e.printStackTrace();
                }




                Banco conn = new Banco();
                int id = 0;

                ResultSet rs = conn.executarConsulta( "SELECT id FROM clientes WHERE descricao = '" + descricao + "'" );

                try
                {
                    while ( rs.next() )
                    {
                        id = rs.getInt("id");
                    }
                } catch ( Exception e )
                {
                    e.printStackTrace();
                }

                if ( id != 0 )
                {

                    try
                    {
                       if(( qtdeDescricao != 0 ) && ( idCliente != id ))
                       {
                           JOptionPane.showMessageDialog( null, " Esse cliente já foi registrado! " );
                           return;
                       }

                        conn.updateCliente( id, descricaoAtualizada, statusAtualizada );

                        dispose();

                        JOptionPane.showMessageDialog( null, "Registro alterado com sucesso!", "Mensagem", JOptionPane.INFORMATION_MESSAGE );

                    } catch ( Exception e )
                    {

                        e.printStackTrace();

                    }

                } else
                {

                    try
                    {
                        
                       if ( qtdeDescricao != 0 )
                        {
                            JOptionPane.showMessageDialog( null, " Esse cliente já foi registrado! " );
                            return;
                        }

                        conn.insertCliente( descricaoAtualizada, statusAtualizada );


                        dispose();

                        JOptionPane.showMessageDialog( null, "Registro realizado com sucesso!", "Mensagem", JOptionPane.INFORMATION_MESSAGE );

                    } catch ( Exception e )
                    {

                        e.printStackTrace();

                    }
                }
                conn.fecha();

                DialogAdminClientes.atualizaTela();


            }
        } );


        btnCancelar.addActionListener( new ActionListener()
        {

            public void actionPerformed( ActionEvent ae )
            {
                dispose();
            }
        } );

    }
}
